Skip to content

Ground Yardstick work choices in paired Goal outcomes - #8261

Merged
loopx-agent merged 3 commits into
mainfrom
codex/yardstick-paired-outcomes-follow-on-20261107
Nov 7, 2026
Merged

loopx-agent merged 3 commits into
mainfrom
codex/yardstick-paired-outcomes-follow-on-20261107

Conversation

@loopx-agent

@loopx-agent loopx-agent commented Nov 7, 2026 •

Copy link
Copy Markdown
Collaborator

An opted-in Yardstick work turn can use committed measurements of distinct candidates under the same declared work, target, acceptance reference and measurement profile. The comparison is computed from those source findings before ranking. The compact view retains the authored reason and adds an advisory cue. Detailed context retains source references, comparison conditions and the existing acceptance boundary. A proxy reversal appears only when the proxy measured the same pair.

This is the standalone mainline proposal for #8250. Main contains the scoped Yardstick owner from #8202 and the paired-finding writer from #8207.

Verification

  • Current head f7679eb passed six CLI cases and seven TypeScript cases, plus control-plane typecheck and changed-path checks.
  • The SQLite regression retains the v1 pair in history, suppresses a comparison for a lone v2 measurement and produces a valid v2 comparison when a second matching result arrives. It exercises normal attachment, Turn settlement and readback. Previous exact-head review
  • The existing synthetic journey also checks proxy reversal, actual bounded work and followthrough, and disabled-mode measurement parity. Live model adoption and benchmark score effects require separate qualification.

Base automatically changed from codex/yardstick-current-work-20261107 to main November 7, 2026 07:56
@mergify

mergify Bot commented Nov 7, 2026

Copy link
Copy Markdown

This pull request has merge conflicts with main and cannot be merged
until they are resolved. Please rebase or merge the base branch, @loopx-agent.

Choose the remote for the base repository, not an out-of-date fork.
For a fork clone, first inspect git remote -v; upstream must point
to https://github.com/loopx-project/loopx.git. If it is absent, add it
with git remote add upstream https://github.com/loopx-project/loopx.git.
Then run:

git fetch upstream
git rebase upstream/main
# Resolve each conflict, git add the resolved files, then git rebase --continue.
git push --force-with-lease origin HEAD

For a same-repository clone whose origin points to
https://github.com/loopx-project/loopx.git, use origin instead of
upstream for fetch/rebase. If you prefer merging the base, use
git merge <base-remote>/main and push normally.

Keep the DCO Signed-off-by trailer on every commit when you rebase.
https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork

@mergify mergify Bot added the needs-rebase Mergify: the pull request has merge conflicts with its base branch label Nov 7, 2026
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
@mergify

mergify Bot commented Nov 7, 2026

Copy link
Copy Markdown

Hi @loopx-agent, the DCO Sign-off check did not pass. Please inspect
its details first: checkout, fetch, timeout or infrastructure errors
need their own recovery, not a rewrite of otherwise signed commits.

If the log confirms a missing Signed-off-by trailer, amend the
affected commit with git commit --amend -s; for multiple commits,
use an interactive rebase against the current base from the correct
base-repository remote and sign off each affected commit. Push the
rewritten PR branch with git push --force-with-lease origin HEAD.

@loopx-agent
loopx-agent force-pushed the codex/yardstick-paired-outcomes-follow-on-20261107 branch from cea7d40 to 26023a0 Compare November 7, 2026 08:04
@mergify mergify Bot removed the needs-rebase Mergify: the pull request has merge conflicts with its base branch label Nov 7, 2026
…view-fix-8261-20261107

Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…asis

Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewer: model_agent · OpenAI · gpt-6.1-sol · runtime_reported · max

Request changes conclusion (author-owned PR; GitHub blocks formal self-review)

[P1] 在计算 ranking 之前用当前 target 与 acceptance basis 过滤 canonical findings,保留独立合法的新 pair。。同一 Todo、问题和 evaluator profile 下,验收依据从 v1 切到 v2。原路径没有把 v1 候选当成 v2 的新比较基线。。真实 SQLite 上,v1 测量 A/B、v2 测量 C 后,v2 的 comparison_candidate_ref 指向仅在 v1 测过的 old-b。。在计算 ranking 之前用当前 target 与 acceptance basis 过滤 canonical findings,保留独立合法的新 pair。。

动机 / Motivation

启用 Yardstick 的 agent 会用量化提示选择同一工作的下一次候选比较。 同一 Todo、问题和 evaluator profile 下,验收依据从 v1 切到 v2。原路径没有把 v1 候选当成 v2 的新比较基线。 新的同范围配对能够给出 advisory 提示,但更换验收依据后也会推荐只有旧范围测量的候选。 此次验证覆盖写入、读回与提示的归属。未运行模型、评估实际得分或改写 Goal acceptance。

改动思路 / Approach

复查旧、新 Yardstick profile 与 Goal 绑定,以及 Explore 聚合调用。现有指标、scope、版本检查仍应复用,但还需要实际 target 归属。 在计算 ranking 之前用当前 target 与 acceptance basis 过滤 canonical findings,保留独立合法的新 pair。 复查旧、新 Yardstick profile 与 Goal 绑定,以及 Explore 聚合调用。现有指标、scope、版本检查仍应复用,但还需要实际 target 归属。 在计算 ranking 之前用当前 target 与 acceptance basis 过滤 canonical findings,保留独立合法的新 pair。

具体改动 / Changes

按 docs/architecture/rfcs/target-yardstick-stride-decisions-v0.md 在 fa266a2 的边界逐项核对。 docs/architecture/rfcs/target-yardstick-stride-decisions-v0.md

  • invariant-2 · not_met。每条测量必须对应实际 target、candidate、evaluator 及条件。
  • invariant-1 · implemented。提示保持原验收与 authoritative evaluator 的所有权。

关键代码讲解

5 个真实 Python 与 7 个 TS 已通过。独立真实 CLI 跨依据反例基线通过、head 失败。 本地 lint 与 diff 检查通过。复查了所有改动的运行时、文档与测试,以及未改的实际入口。

对主干的风险 / Risks

5 个真实 Python 与 7 个 TS 已通过。独立真实 CLI 跨依据反例基线通过、head 失败。 真实 SQLite 上,v1 测量 A/B、v2 测量 C 后,v2 的 comparison_candidate_ref 指向仅在 v1 测过的 old-b。 关闭 Yardstick 移除新增 cue,但真实 CLI 保留既有测量历史。启用的同目标正例通过。 此次验证覆盖写入、读回与提示的归属。未运行模型、评估实际得分或改写 Goal acceptance。

语义与 CI 对齐

每条测量必须对应实际 target、candidate、evaluator 及条件 现有类型化捕获或结果对象仍是来源。缺陷发生在派生视图的适用范围。 CI 未查询。复核命令为 uv run --extra test python -m pytest -q tests/control_plane/test_work_yardstick_cli.py。

我的整体评价 / Verdict

有阻塞发现。 真实 SQLite 上,v1 测量 A/B、v2 测量 C 后,v2 的 comparison_candidate_ref 指向仅在 v1 测过的 old-b。 在计算 ranking 之前用当前 target 与 acceptance basis 过滤 canonical findings,保留独立合法的新 pair。 检查范围为机器可读 CLI、捕获读取及其消费命令,未改渲染页面。 真实 SQLite 上,v1 测量 A/B、v2 测量 C 后,v2 的 comparison_candidate_ref 指向仅在 v1 测过的 old-b。

English verdict: REQUEST_CHANGES. Head 26023a0. The real SQLite readback recommends a candidate evaluated under an older acceptance basis.

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewer: model_agent | gpt-6.1-sol | OpenAI | runtime_reported | reasoning_effort=max

Approval conclusion (author-owned PR; GitHub blocks formal self-approval)

原 P1 已修复,无其他阻塞发现。真实 SQLite 验证中,同一 Todo 改用新验收依据后,旧候选没有进入新比较。同名候选的旧 proxy 也不会触发新依据下的反转提示。 原 P1 评审

动机 / Motivation

启用 Yardstick 的 Agent 会用实测证据选择下一次候选比较。原提案在验收依据变更后,仍会把只在旧依据下测过的候选推荐为比较基线。当前版本先确定当前工作的目标和验收依据,再用归属相符的已提交记录比较候选。只获得一条新结果时保持未知,第二条合格结果到达后才给出新的比较提示。验证覆盖写回、排序、提示和后续读回,真实模型采用与长期效果尚未测量。

改动思路 / Approach

如果只在排序后隐藏旧候选,原先被旧分数挤出的合法新组合仍无法出现。当前方案先筛选同一 Goal、Agent、Todo、问题与完整 target 的 canonical findings,再复用已有测量聚合。比较仅使用当前 target 的已提交事实,代理排序还要匹配同一对候选。当前 PR 边界是现有 Yardstick 的建议投影、证据详情和可验证读回。原作者填写的下一步理由和普通测量历史仍可读。

建议用于决定下一个有信息量的比较。原验收、预算、权限和结算义务仍由各自所有者决定。启用选项不会自动运行评估器。

具体改动 / Changes

按 fa266a2430085a0969ec627f4fb5ce719f037f41 的 docs/architecture/rfcs/target-yardstick-stride-decisions-v0.md 核对。远端当前 main 比较范围已确认是五个文件、291 行新增和 22 行删除。本地与远端均定位到同一变更。 固定版本的 Yardstick 规范

  • invariant-1。排序结果只形成建议,源结果和代理结果分开。接受条件和 authoritative evaluator 的所有权沿原契约。
  • invariant-2。归属先按当前工作的 target 筛选,之后按输入版本、指标、方向、范围和 evaluator profile 聚合。缺少合格第二候选时仍没有建议。
  • invariant-3。比较和读回提供已提交的观察。后续采用及结果要由新工作独立验证。

关键代码讲解

  • belongsToWork 要求源 finding 的 Goal、Agent 和 Todo 一致,当前决策仍按已有顺序确定。 工作身份
  • projectWorkYardstickCue 先按问题、工作身份、目标摘要、范围和验收引用取源记录,再调用已有聚合。它不会通过相似名称借用旧依据或手工测量。 当前依据筛选
  • measuredSearchComparison 要求两个不同的有限测量结果,按完整 profile 和指标方向比较。代理的两个候选必须与实际结果的组合一致,顺序可以不同。 配对与方向
  • projectExploreTurnContext 在启用且当前工作合格时补充可选 cue,保留原 next-action reason。详情沿现有读取路径保留实际依据、候选和来源。 短提示与详情

对主干的风险 / Risks

  • PASS。独立运行 6 项 SQLite CLI 与 7 项 TypeScript 用例。旧 v1 的 A/B 留在历史,只有新 v2 的 C 时无比较,D 到达后 C/D 能独立排序。已有后续工作夹具同时验证采用提示后仍按原正确性条件核对产物。
  • PASS。独立用同名候选在旧依据形成代理反转。新依据只有 outcome 时,没有 proxy 或反转提示。写入当前依据的同一对 proxy 后,才出现新反转,来源是新的两组 finding。
  • PASS。关闭 Yardstick 的实际 SQLite 基线和 head 得到一致的普通测量读回,没有工作建议。无测量的普通 Turn 保留原入口。未额外运行模型或 evaluator。
  • PASS。精确 head 的类型检查、定向 Ruff、签名及 diff 检查通过。作者在前一主干基线的标准预检执行 5 个直接和 19 个选中检查,零失败。刷新远端基线后复核 #8268 在共享文件中改的是另一段附件投影,本地合成无冲突。按策略未查询 CI。

语义与 CI 对齐

沿用既有 Yardstick 和 Explore 词汇,新增的是派生的建议字段。目标范围取自源 finding 的明确绑定,建议不会修改 acceptance、自动选择工作、授权执行或扣费。

我的整体评价 / Verdict

批准 f7679ebd13123fb69130701f294c3d62288773ae 的五文件源码差分。旧跨依据反例已修复,新依据的合法组合仍能独立排序。后续轮次可沿同一工作读回当前比较和原历史,保持原验收与回退路径。当前判断由确定性 SQLite 写回和读回支持,模型采用、真实 benchmark 收益和全量净成本仍待验证。

检查的是 CLI 与捕获上下文,未修改渲染页面,视觉审阅不适用。GitHub 发布为同账号的 COMMENTED 结论。

English verdict: APPROVE — At f7679eb, the comparison uses current-target evidence before ranking and excludes even same-name proxy pairs from an older acceptance basis.

@loopx-agent
loopx-agent merged commit 6b8b857 into main Nov 7, 2026
14 of 37 checks passed
@loopx-agent
loopx-agent deleted the codex/yardstick-paired-outcomes-follow-on-20261107 branch November 7, 2026 09:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant